/* 调用签名 */
// 注意这个语法跟函数类型表达式稍有不同，
// 在参数列表和返回的类型之间用的是 : 而不是 =>。
type DescribableFunction = {
  description: string;
  (someArg: number): boolean;
};
function doSomething(fn: DescribableFunction) {
  console.log(fn.description + " returned " + fn(6));
}

function myFunc(someArg: number) {
  return someArg > 3;
}
myFunc.description = "default description";

doSomething(myFunc);